Υποθέτωντας ότι:
a) η εφαρμογή σου που διαβάζει το αρχείο είναι ήδη έτοιμη για Globalization (αν είναι WinForms δηλαδή πρέπει το κυρίως παράθυρο να έχει Localizable=true στα properties)
b) Έχεις θέσει προγραμματιστικά κάπου στον κώδικα την γλώσσα του thread σε ελληνικά (με Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("el"); )
μπορείς να κάνεις το εξής (γενικοποιώντας την απάντηση του nikolaosk)
protected void ReadTextFromFile()
{
CultureInfo cinf = Thread.CurrentThread.CurrentUICulture;
Encoding enc = Encoding.GetEncoding(cinf.EnglishName);
StreamReader sr = new StreamReader(@"D:\lala.txt", enc);
string str = sr.ReadToEnd();
string snew = string.Format(CultureInfo.CurrentUICulture, "Το κείμενό σου είναι : {0}", str);
}
Προφανώς (ίσως μερικές φορές όχι και τόσο προφανές) προυποτίθεται ότι έχεις ελληνικό Language Pack στο λειτουργικό σύστημα ήδη.
Το ότι το αρχείο σου είναι text και ότι το διαβάζεις μέσω internet, και εν τέλει το ότι το κείμενο διαβάζεται από αρχείο είναι εντελώς άσχετα. Μην το παίρνεται στραβά, απλά θέλω να επισημάνω πόσο βοηθάει ο τρόπος σκέψης στη λύση ενός προβλήματος.
Αν απομονώσει κανείς τη λογική του τι θέλουμε να επιτύχουμε, είναι απλά η εμφάνιση ενός string με συγκεκριμένα χαρακτηριστικά. Το ενδιαφέρον αυτό χαρακτηριστικό είναι η κωδικοποίηση, που στην C# αντιπροσωπεύεται από την CultureInfo.
Το κείμενο στην C# είναι αντικείμενα τύπου String, και η γλώσσα παρέχει την String.Format() που παίρνει σαν πρώτη παράμετρο ένα IFormatProvider που βρίσκεται εκεί για αυτή ακριβώς τη δουλειά.
Άρα πιστεύω ότι αν διαβάσει κανείς καλά το MSDN στην καταχώρηση String Class members όλο και κάτι θα βρεθεί. (Κοιτώντας πίσω από το CultureInfo θα δει κανείς ότι υλοποιεί (implements) το interface IFormatProvider!)
___________________________
[ Panos - Software Engineer ]
---------------------------
Panagiotis Georgiadis
HBM Netherlands B.V.
www.twitter.com/HimWithCurls